iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
AI & Data

從根本學習Reinforcement Learning系列 第 9

[Day09]Sarsa & Q Learning (1)

  • 分享至 

  • xImage
  •  

前言

今天會以昨天講的TD Learning,來介紹兩種TD Learning中最有名的方法,Sarsa與Q Learning。

Sarsa

昨天TD Learning中的Value Function更新方式為
https://ithelp.ithome.com.tw/upload/images/20200909/20129922LOOqRxyDUj.png
而為了要進行policy improvement,跟Monte Carlo Method一樣,通常會用https://chart.googleapis.com/chart?cht=tx&chl=q(s%5C%20%2C%5C%20a)來取代https://chart.googleapis.com/chart?cht=tx&chl=V(S)

現在公式中的https://chart.googleapis.com/chart?cht=tx&chl=V(S_%7Bt%2B1%7D)要換成https://chart.googleapis.com/chart?cht=tx&chl=q(S_%7Bt%2B1%7D%5C%20%2C%5C%20A)的話,我們的https://chart.googleapis.com/chart?cht=tx&chl=A應該要選擇甚麼才對呢?

一種方法是以當前policy的action來決定,我們以這個policy得到的Value值來做更新。更新完後再improvement我們的policy,可以證明最後能夠得到真正的optimal policy。也可以用GPI的圖來看
https://ithelp.ithome.com.tw/upload/images/20200909/20129922VdfGFxJIeI.png
每次都往目前policy選擇的行為來更新,而policy又為當前Value的https://chart.googleapis.com/chart?cht=tx&chl=%5Cepsilon-greedy policy,所以最後會往optimal policy的方向移動。

根據上述我們用https://chart.googleapis.com/chart?cht=tx&chl=q(S%5E%7B'%7D%5C%20%2C%5C%20A%5E%7B'%7D)來當作https://chart.googleapis.com/chart?cht=tx&chl=V(S%5E%7B'%7D)的值,其中https://chart.googleapis.com/chart?cht=tx&chl=A%5E%7B'%7D為下個時間點中,policy所做的action。

從演算法比較好理解:
https://ithelp.ithome.com.tw/upload/images/20200909/20129922Ho2TLdFLW8.png

Expected sarsa

上述方法收斂的速度沒有很快,原因是因為我的的policy為https://chart.googleapis.com/chart?cht=tx&chl=%5Cepsilon-greedy policy,如果我們在https://chart.googleapis.com/chart?cht=tx&chl=S%5E%7B'%7D選擇到隨機action的話,更新後的https://chart.googleapis.com/chart?cht=tx&chl=q(S%5C%20%2C%5C%20A)有可能會偏離真實值。

好的估測https://chart.googleapis.com/chart?cht=tx&chl=q(S%5E%7B'%7D%5C%20A%5E%7B'%7D)的方式是用期望值來計算:https://chart.googleapis.com/chart?cht=tx&chl=%5Csum%5Climits_%7Ba%7D%5Cpi(a%5C%20%5Cmid%5C%20S_%7Bt%2B1%7D)q(S_%7Bt%2B1%7D%5C%20%2C%5C%20a),可以保證會以更正確的方向來更新。
所以我們可以將上面的算法改為:
https://ithelp.ithome.com.tw/upload/images/20200909/2012992285DUCcsTSZ.png
Sarsa與Expected Sarsa的更新類似於stochastic-gradient與gradient的關係
https://ithelp.ithome.com.tw/upload/images/20200909/20129922gpV1NkiE4D.png
圖片取自https://www.researchgate.net/figure/Stochastic-gradient-descent-compared-with-gradient-descent_fig3_328106221

Sarsa相當於stochastic-gradient
Expected Sarsa相當於gradient

Sarsa的更新不會直接往optimal policy的的更新不會直接往optimal policy的方向走,而是有點凌亂的前進,但最後一樣會收斂至optimal policy。

Q Learning

另一種找Value Function的方法是直接從optimal value function中更新,也就是https://chart.googleapis.com/chart?cht=tx&chl=%5Cmax_%7Ba%7Dq(S%5E%7B'%7D%5C%20%2C%5C%20a),每次都以optimal value function更新,可以保證我們快速收斂至optimal value function。

演算法與Sarsa很像,只要改為https://chart.googleapis.com/chart?cht=tx&chl=max就好:
https://ithelp.ithome.com.tw/upload/images/20200909/20129922cKIfVCeIdS.png

總結

學會上面的方法後,基本上大多數有限state的環境都能夠解決。明天將會實際寫code來實現上面的演算法,並稍微介紹一下兩者的優缺點。


上一篇
[Day08]時序差分學習
下一篇
[Day10]Sarsa & Q Learning (2)
系列文
從根本學習Reinforcement Learning12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言